﻿package Levels 
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.ui.Mouse;
	import Objetos.Heroi;
	/**
	 * ...
	 * @author Rodrigo Forti
	 */
	public class Level extends MovieClip
	{
		protected var MC_heroiA:Heroi;
		protected var MC_upgrade:MovieClip;
		protected var MC_botao:MovieClip;
		
		protected var _gameConstructor:MovieClip
		
		protected var TX_placar:TextField = new TextField;
		protected var TX_placarFormato:TextFormat = new TextFormat;
		
		protected var AR_plataforma:Array = new Array();
		protected var AR_posicoesUpgrade:Array = new Array();
		
		public static var AR_tiros:Array = new Array();
		public static var AR_herois:Array = new Array();
		
		protected var UI_randomPosicao:uint;
		
		
		public function Level() 
		{
			
		}
		
		public function update():void
		{
			
			
			for each (MC_heroiA in AR_herois)
			{
				MC_heroiA.update();
			}
			
			for (var k:uint = 0; k < AR_tiros.length; k++)
			{
				AR_tiros[k].update();
			}
			
			MC_heroiA.BO_pulando = true;
			
			for (var i:uint = 0; i < AR_plataforma.length; i++)
			{
				for (var r:uint = 0; r < AR_herois.length; r++)
				{
					if (AR_herois[r].hitTestObject(AR_plataforma[i]) && AR_herois[r].NB_velocidadeY > 0 && AR_herois[r].y < AR_plataforma[i].y - 5)
					{
						AR_herois[r].NB_velocidadeY = 0;
						AR_herois[r].y = AR_plataforma[i].y - AR_plataforma[i].height / 2 - AR_herois[r].height / 2;
						AR_herois[r].BO_pulando = false;
					}
				}
			}
			
			colidirTiroHeroi();
			placar();
			colidirHeroiUpgrade();
			terminarJogo();
		}
		
		public function placar():void
		{
			if (AR_herois.length == 2)
			{
				TX_placar.text = AR_herois[0].UI_vida.toString() + "   x   " + AR_herois[1].UI_vida.toString();
				TX_placar.x = Main.getInstance().stage.stageWidth / 2 - TX_placar.width / 2;
				TX_placar.textColor = 0x000000;
				TX_placar.selectable = false;
				
				TX_placarFormato.align = "center"
				TX_placarFormato.bold = true;
				TX_placarFormato.size = 20;
				TX_placar.defaultTextFormat = TX_placarFormato;
			}
		}
		
		public function colidirTiroHeroi():void
		{
			for (var f:uint = 0; f < AR_herois.length; f++)
			{
				if (AR_herois[f].UI_vida == 0)
				{
					Main.getInstance().MC_tela.removeChild(AR_herois[f]);
					AR_herois.splice(f, 1);
					break;
				}
				
				for (var p:uint = 0; p < AR_tiros.length; p++)
				{
					if (AR_herois[f].hitTestObject(AR_tiros[p]) && (AR_herois[f].UI_player != AR_tiros[p].UI_player))
					{
						Main.getInstance().MC_tela.removeChild(AR_tiros[p]);
						AR_tiros.splice(p, 1);
						AR_herois[f].perderVida();
					}
				}
			}
		}
		
		public function colidirHeroiUpgrade():void
		{
			for each (MC_heroiA in AR_herois)
			{
				if (MC_upgrade!= null && MC_heroiA.hitTestObject(MC_upgrade))
				{
					Main.getInstance().MC_tela.removeChild(MC_upgrade);
					MC_upgrade = null;
					MC_heroiA.BO_pegouUpgrade = true;
				}
			}
		}
		
		public function terminarJogo():void
		{
			for (var f:uint = 0; f < AR_herois.length; f++)
			{
				if (AR_herois[f].UI_vida <= 0)
				{		
					AR_herois[0].removerListener();
					AR_herois[1].removerListener();
					AR_herois[f].UI_vida = 10;
					
					AR_herois.length = 0;
					AR_tiros.length = 0;
					
					Main.getInstance().removeChild(Main.getInstance().MC_tela);
					Main.getInstance().MC_tela = null;
					Main.getInstance().removeEventListener(Event.ENTER_FRAME, Main.getInstance().update);
					
					MC_botao = new Restart();
					MC_botao.x = Main.getInstance().stage.stageWidth / 2;
					MC_botao.y = Main.getInstance().stage.stageHeight / 2;
					Main.getInstance().stage.addChild(MC_botao);
					
					MC_botao.addEventListener(MouseEvent.CLICK, reiniciarJogo, false, 0, true);
				}
			}
		}
		
		public function reiniciarJogo(e:MouseEvent):void
		{
			MC_botao.removeEventListener(MouseEvent.CLICK, reiniciarJogo);
			Main.getInstance().stage.removeChild(MC_botao);
			MC_botao = null;
			
			
			Main.getInstance().iniciarJogo();
		}
	}

}